package com.labot.types;

public enum ConstantsType {

	//PROPERTY							GROUP 						PLACE HOLDER				DEFAULT VALUE								DESCRIPTION
	// TESTING
	TESTING_SYSTEM(					ConstantsGrupsType.TESTING,	null, 						"true",										"If it's true the system acts as testing server."),
	TESTING_EMAIL_RECIPIENT(		ConstantsGrupsType.TESTING,	null, 						"barbeito.enrique@gmail.com",				"Where all mails are sent"),
	TESTING_RUN_JOBS(				ConstantsGrupsType.TESTING,	null, 						"true",										"Run task Jobs?"),
	
	// MAIL
	MAIL_DEFAULT_FROM(				ConstantsGrupsType.MAIL,	"mail.smtp.from", 			"noreply <barbeito.enrique@gmail.com>",		"Default mail Sender"),
	MAIL_DEBUG(						ConstantsGrupsType.MAIL,	"mail.debug", 				"true", 									"Mail debug information (to App Console)"),
	MAIL_TRANSPORT_PROTOCOL(		ConstantsGrupsType.MAIL,	"mail.transport.protocol", 	"smtp", 									"Tipe of Mail Server"),
	MAIL_HOST(						ConstantsGrupsType.MAIL,	"mail.smtp.host", 			"smtp.gmail.com", 							"Mail Host, default localhost"),
	MAIL_PORT(						ConstantsGrupsType.MAIL,	"mail.smtp.port", 			"587", 										"Mail Port, default 25"),
	MAIL_SMTP_AUTH(					ConstantsGrupsType.MAIL,	"mail.smtp.auth", 			"true", 									"Use AUTH? true / false, default value true, (Gmail use true)"),
	MAIL_START_TLS(					ConstantsGrupsType.MAIL,	"mail.smtp.starttls.enable","true", 									"Use TLS? true / false, default value true (Gmail use true)"),
	MAIL_ENCODING(					ConstantsGrupsType.MAIL,	"mail.smtp.encoding", 		"UTF-8", 									"Mail Encoding, default UTF-8"),
	MAIL_USERNAME(					ConstantsGrupsType.MAIL,	"mail.smtp.username", 		"barbeito.enrique@gmail.com", 				"Mail username, leave blank if its allows to send Anonimous mails"),
	MAIL_PASSWORD(					ConstantsGrupsType.MAIL,	"mail.smtp.password", 		"the secret key",							"Mail password, leave blank if its allows to send Anonimous mails"),
	
	//GRUPOS DE MAIL
	
	MAIL_FIRMAS(					ConstantsGrupsType.MAIL,	null, 						"aca va el mail",							"Grupo de mail firmas."),
	
	
	//GENERAL
	LOGOUT_WARNING_TIME(			ConstantsGrupsType.GENERAL,	null, 						"300", 										"Seconds to show Warning logout."),
	LOGOUT_TIME(					ConstantsGrupsType.GENERAL,	null, 						"120", 										"Seconds to show logout after show Warning."),
	SERVER_NAME(					ConstantsGrupsType.GENERAL,	null, 						"LH-MTZ-NTK-052", 							"Name of Production Server where it's the App Installed."),
	
	//LDAP
	LDAP_ENABLED(					ConstantsGrupsType.LDAP,	null,				 		"false",										"Enable the comunication with a Domain Controller System to grant user access."),
	LDAP_HOST(						ConstantsGrupsType.LDAP,	null,				 		"10.10.0.105",								"LDAP Server IP or HostName."),
	LDAP_PORT(						ConstantsGrupsType.LDAP,	null,				 		"3268",										"LDAP Server Port."),
	LDAP_DOMAIN(					ConstantsGrupsType.LDAP,	null,				 		"labhidalgo.net",							"Enterprise Domain."),
	LDAP_REFERRAL(					ConstantsGrupsType.LDAP,	null,				 		"follow",									"LDAP Referral."),
	LDAP_OU(						ConstantsGrupsType.LDAP,	null,				 		"01 - Usuarios Activos",					"LDAP OU."),
	LDAP_ADMINISTRATIVE_USER(		ConstantsGrupsType.LDAP,	null,				 		"ldapbind",								"LDAP Server Username."),
	LDAP_ADMINISTRATIVE_PASSWORD(	ConstantsGrupsType.LDAP,	null,				 		"VKR$1Cyx]O:B(XAr}eCWu$2n7nN3?e",								"LDAP Server Password."),
	LDAP_PHOTO_ATTR_FIELD(			ConstantsGrupsType.LDAP,	null,				 		"thumbnailPhoto",								"LDAP Custom Photo Field, example: thumbnailPhoto.");
	

	private String description;
	private String defaultValue;
	private ConstantsGrupsType group;
	private String placeHolderKey;
	
	/**
	 * Constructor
	 * @param description
	 */
	private ConstantsType(ConstantsGrupsType group, String placeHolderKey, String defaultValue, String description) {
		this.description = description;
		this.defaultValue = defaultValue;
		this.group = group;
		this.placeHolderKey = placeHolderKey;
	}
	
	public String getDescription() {
		return description;
	}
	
	public String getDefaultValue() {
		return defaultValue;
	}
	
	public String getPlaceHolderKey(){
		return placeHolderKey;
	}

	public ConstantsGrupsType getGroup() {
		return group;
	}
	
}
